home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / math / ExpressionDict.cpp < prev    next >
C/C++ Source or Header  |  1999-07-13  |  989b  |  56 lines

  1. #include "ExpressionDict.h"
  2.  
  3. #include "UtilStr.h"
  4.  
  5.  
  6. ExpressionDict::ExpressionDict() :
  7.     mVarDict( true ) {
  8.  
  9. }
  10.  
  11.  
  12.  
  13. void ExpressionDict::AddVar( char* inKey, float* inPtr ) {
  14.  
  15.     mVarDict.Put( new UtilStr( inKey ), inPtr );
  16. }
  17.  
  18.  
  19. void ExpressionDict::AddFcn( char* inKey, float* inFArray[], long inSize ) {
  20.     FcnEntry* entry = new FcnEntry;
  21.  
  22.     entry -> mName.Assign( inKey );
  23.     entry -> mName.Capitalize();
  24.     entry -> mSize = inSize;
  25.     entry -> mFcn = inFArray;
  26.     
  27.     mFcnEntries.addToHead( entry );
  28. }
  29.  
  30.  
  31. float* ExpressionDict::LookupVar( const UtilStr& inName ) {
  32.     float* addr;
  33.     
  34.     if ( mVarDict.Get( &inName, &addr ) )
  35.         return addr;
  36.     else
  37.         return NULL;
  38. }
  39.  
  40.  
  41. float** ExpressionDict::LookupFunc( const UtilStr& inName, long& outSize ) {
  42.     FcnEntry* entry = (FcnEntry*) mFcnEntries.GetHead();
  43.     
  44.     while ( entry ) {
  45.         if ( entry -> mName.compareTo( &inName ) == 0 ) {
  46.             outSize = entry -> mSize;
  47.             return entry -> mFcn;
  48.         } 
  49.             
  50.         entry = (FcnEntry*) entry -> GetNext();
  51.     } 
  52.     
  53.     outSize = 0;
  54.     return NULL;
  55. }
  56.